﻿/********************************************************************************
** @ Date:2025/06/26
** @ Author: Gaojia
** @ Description: 轮播显示管理界面
** @ Version:1.0.0
** @ Fun:
********************************************************************************/
#ifndef UCarousePage_H
#define UCarousePage_H
#include <QWidget>
#include <QTimer>
#include "CPageCarouse.h"
#include "CNodeCarouse.h"
#include "UCarouseshowPage.h"
#include "ui_UCarousePage.h"

class UAlarm;
class UCarousePage : public QWidget
{
	Q_OBJECT

public:
	UCarousePage(QWidget *parent = nullptr);
	~UCarousePage();
	void setCurrNode(CBaseCarouse* pNode, bool bRefush = false);  //设置当前的节点
	void setInterval(int nTime);            //设置轮播间隔
	int getInterval();                      //获取轮播间隔
	void ctrCarouse(bool bWork);
	void enlargeUi(bool bEnlarge);          //全屏和取消全屏
private:
	void initUi();                          //初始化界面
	void initCombox();                      //初始化下拉列表 
	void refushUiUi();                      //刷新界面
	void setLabelText();                    //设置当前页码
	bool eventFilter(QObject* obj, QEvent* event);
private:
	Ui::UCarousePageClass ui;
	int m_nIndex;         //显示序号
	CNodeCarouse *m_pNode;
	QWidget *m_pParent;   //父界面
	bool m_isFullscreen;
	QTimer m_timer;
	QTimer m_timerDelete;    //是否界面的定时器
	int m_nIntervalMs;
	int m_nTimeIndex;
	int m_nChildCount;
	UAlarm* m_pAlarmTech;
	UAlarm* m_pAlarmFault;
	QVector<UCarouseshowPage*>m_vecCarousePage;
	QMap<QString, UCarouseshowPage*>m_mapCarousePage;
	QVector<UCarouseshowPage*>m_vecCarousePageDel;   //需要延时释放的界面 如果直接释放 视频还没有退出可能导致程序崩溃
private slots:
	void slot_left();        //上一页
	void slot_right();       //下一页
	void slot_leftLeft();    //第一页 
	void slot_rightRight();  //最后一页
	void slot_start();       //启动
	void slot_stop();        //停止
	void slot_enlarge();     //全屏
	void slot_startCarouse();//启动
	void slot_alarmTech();   //工艺报警
	void slot_alarmFalut();  //故障报警
	void slot_deleteCarousePage();//延时释放界面
	void slot_comboxGroup(int nIndex);  //轮播组切换
	void slot_comboxCard(int nIndex);   //画面切换
signals:
	void sign_enlarge(bool bEnlarge);
};
#endif